#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

int main() {
    int fd = -1;
    int ret = 0;
    int buff[] = {10, 20, 30, 40};  // 要写入的整数
    int *read_buff = (int *) malloc(4 * sizeof(int));  // 读取的整数

    // 1. 打开文件（添加权限参数）
    if ((fd = open("./test.txt", O_RDWR | O_CREAT)) == -1) {
        perror("Open Error");  // 使用 perror 输出更详细的错误信息
        exit(1);
    }

    // 2. 写入整数
    ret = write(fd, buff, 4 * sizeof(int));
    if (ret != 4 * sizeof(int)) {
        perror("write Error");
        close(fd);
        exit(1);
    }
    printf("write %d byte(s)\n", ret);

    // 3. 重置文件指针到开头
    if (lseek(fd, 0, SEEK_SET) == -1) {
        perror("lseek Error");
        close(fd);
        exit(1);
    }

    // 4. 读取整数
    ret = read(fd, read_buff, 4 * sizeof(int));
    if (ret != 4 * sizeof(int)) {
        perror("read Error");
        close(fd);
        exit(1);
    }
    printf("read %d byte(s), the number is %d\n", ret, read_buff[0]);

    // 5. 关闭文件
    if (close(fd) == -1) {
        perror("close Error");
        exit(1);
    }

    return 0;
}